import Vue from "vue";
import axios from "axios";
import store from "@/store";
import toasted from 'vue-toasted';

const service = axios.create({
    // baseURL: "",
    timeout: 5000,
    // headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }
});
axios.defaults.headers["Access-Control-Allow-Origin"] = "*";
// axios.defaults.headers.post["Content-Type"] = "application/json"; //默认会发送这个
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
// axios.defaults.withCredentials = false;

// request 请求拦截器
service.interceptors.request.use(
    config => {
        // config.headers["Authorization"] = "456";
        // if (store.getters.token && store.getters.ignoreToken !== true) {
        //   config.headers["Authorization"] = store.getters.token; // getToken(); // 让每个请求携带自定义token 请根据实际情况自行修
        // }
        config.url = "http://" + store.state.FormData.ip + ":" + store.state.FormData.port + config.url
        // if (store.getters.token) {
        //     config.headers["Authorization"] = store.getters.token; // getToken(); // 让每个请求携带自定义token 请根据实际情况自行修
        // }
        //config.headers["lang"] = "";
        // if (store.getters.language) {
        //   config.headers["Lang"] = store.getters.language; // language; // 根据当前语言后台返回 中英文message
        // }

        // 随便写个值 绕过axios 的if判段
        // https://blog.csdn.net/qq_24729895/article/details/80367460
        if (config.method) {
            config.data = true
        }

        return config;
    },
    error => {
        Promise.reject(error);
    }
);

//response 响应拦截器
service.interceptors.response.use(response => {
    if (response.status == 200) {
        if (response.data.status == '200') {
            return response
        } else {
            Vue.toasted.error(response.data.status + ":" + response.data.error, {
                duration: 5000
            });
        }
    } else {
        Vue.toasted.error(response.status, {
            duration: 5000
        });
    }
}, error => {
    Vue.toasted.error(error, {
        duration: 5000
    });
})
// response 响应拦截器
// service.interceptors.response.use(
//     function (response) {
//         if (
//             response.status === 400 ||
//             response.status === 404 ||
//             response.status === 405 ||
//             response.status === 500
//         ) {
//             Message({
//                 message: "请求数据错误，响应码" + response.status,
//                 type: "error",
//                 duration: 5000
//             });
//         } else if (response.data.status === 400) {
//             Message({
//                 message: response.data.status + response.data.message,
//                 type: "error",
//                 duration: 5000
//             });
//         } else if (response.data.status === 401) {
//             MessageBox.confirm(response.data.message, "系统提示", {
//                 confirmButtonText: "重新登录",
//                 cancelButtonText: "取消",
//                 type: "warning"
//             }).then(() => {
//                 store.dispatch("LogOut").then(() => {
//                     location.reload(); // 为了重新实例化vue-router对象 避免bug
//                 });
//             });
//         } else if (response.data.status === 402) {
//             let fields = response.data.data;
//             let arr = [];
//             for (let i = 0; i < fields.length; i++) {
//                 arr.push("<li>" + fields[i].message + "</li>");
//             }
//             Message({
//                 message: response.data.message + "<br/>" + arr.join(""),
//                 type: "error",
//                 duration: 5000,
//                 dangerouslyUseHTMLString: true,
//                 showClose: true
//             });
//         } else if (response.data.status === 403) {
//             MessageBox.confirm(response.data.message, "系统提示", {
//                 confirmButtonText: "重新登录",
//                 cancelButtonText: "取消",
//                 type: "warning"
//             }).then(() => {
//                 store.dispatch("LogOut").then(() => {
//                     location.reload(); // 为了重新实例化vue-router对象 避免bug
//                 });
//             });
//         } else if (response.data.status === 405) {
//             Message({
//                 message: response.data.message,
//                 type: "error",
//                 duration: 5000
//             });
//         } else {
//             if (response.headers.hasOwnProperty("authorization")) {
//                 store.commit("SET_TOKEN", response.headers.authorization);
//             }
//             return response;
//         }
//     },
//     function (error) {
//         // console.log(JSON.stringify(error));
//         Message({
//             message: "请求数据失败，请确认您的网络正常！",
//             type: "error",
//             duration: 5000,
//             showClose: true
//         });
//         return Promise.reject(error);
//     }
// );

export default service;